1. Field of the Invention
The present invention provides a system for permitting low-cost devices to be controlled by programs contained in the device.
2. Background
Various devices are available which include embedded control programs and processing hardware to execute the programs. These devices may contain small computers having a processor and memory or storage for executing the programs stored within the device. Typically, this computing hardware is provided in moderately or higher-priced devices. It is not commercially feasible to provide embedded computer hardware which is several times greater than the typical selling price of the device. For example, embedding $50.00 of computer hardware in a $10.00 device is not likely to be commercially feasible.
Although low-performance computer hardware may be embedded in a device at a low cost, this low-performance hardware may not be capable of executing programs written in programming languages requiring significant processing capabilities. Programs written in high level programming languages, such as object-oriented languages, may not be capable of execution by inexpensive computer hardware which lacks significant processing ability.
Various devices may be interconnected with other devices or computers across a network or other communication medium. These devices include low-cost items such as light switches and door locks as well as more expensive items such as televisions and VCRs. By interconnecting various devices, a particular device may be controlled manually by a user, or may be controlled automatically by another device or computer coupled to the communication medium. To accomplish this control, the low-cost device must contain a sufficient amount of processing hardware to communicate across the communication medium and control operation of the device itself. However, this level of hardware may not be sufficient to execute programs written in high level programming languages which may be necessary to control operation of the device. As discussed above, the addition of hardware sufficient to execute such programs may increase the cost of the device to a point where the device is not competitive.
A specific programming language capable of controlling consumer devices is the JAVA.TM. programming language environment developed by Sun Microsystems.TM. Inc. of Mountain View, Calif. Sun, Sun Microsystems, the Sun logo, and JAVA are trademarks or registered trademarks of Sun Microsystems Inc. in the United States and other countries. JAVA is an object-oriented and architecture-neutral programming language environment. Thus, while other computer languages must be compiled for a particular processor, JAVA programs are interpreted such that a single JAVA program may be used on a variety of processors. Alternatively, JAVA programs may be compiled using a just-in-time (JIT) compiler. The JIT compiler converts the JAVA code to the processor's native code shortly before the compiled code is needed by the processor.
JAVA programs may be executed on any computer platform that supports a JAVA virtual machine (the JAVA virtual machine executes JAVA byte-codes). However, as with other high level languages, the minimum computing resources and memory requirements for a device capable of executing a JAVA program would increase the price of a low-cost device beyond commercial feasibility.
Therefore, a mechanism is necessary to permit a low-cost device to be controlled by an application program requiring a significant amount of computing hardware, yet maintaining a relatively low cost for the device.